/* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License.  You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/


/*************************************************************************
 *\author: starlove
 *************************************************************************/
#ifndef __CC_PYTHON_IMPORT_O_PROTOCOLS__
#define __CC_PYTHON_IMPORT_O_PROTOCOLS__

#include <python_import_utils.hpp>

NS_CCPY_BEGIN
	class CPyRGBAProtocol : public CPyClassBase
	{
	PYCLASS_DEF_INTERFACE(CPyRGBAProtocol)
	public:
		CPyRGBAProtocol(){};
		PYCLASS_GETSET_MAPPING_DEF(CPyRGBAProtocol, Opacity);
		PYCLASS_GETSET_MAPPING_DEF(CPyRGBAProtocol, DisplayedOpacity);
		PYCLASS_GETSET_MAPPING_DEF(CPyRGBAProtocol, CascadeOpacityEnabled);
		PYCLASS_GETSET_MAPPING_DEF(CPyRGBAProtocol, Color);
		PYCLASS_GETSET_MAPPING_DEF(CPyRGBAProtocol, DisplayedColor);
		PYCLASS_GETSET_MAPPING_DEF(CPyRGBAProtocol, CascadeColorEnabled);
		PYCLASS_GETSET_MAPPING_DEF(CPyRGBAProtocol, OpacityModifyRGB);
	};

	class CPyBlendProtocol : public CPyClassBase
	{
	PYCLASS_DEF_INTERFACE(CPyBlendProtocol)
	public:
		CPyBlendProtocol(){};
		PYCLASS_GETSET_MAPPING_DEF(CPyBlendProtocol, BlendFunc);
	};	

	class CPyTextureProtocol : public CPyClassBase
	{
	PYCLASS_DEF_INTERFACE(CPyTextureProtocol)
	public:
		CPyTextureProtocol(){};
		PYCLASS_GETSET_MAPPING_DEF(CPyTextureProtocol, Texture);
	};	

	class CPyLabelProtocol : public CPyClassBase
	{
	PYCLASS_DEF_INTERFACE(CPyLabelProtocol)
	public:
		CPyLabelProtocol(){};
		PYCLASS_GETSET_MAPPING_DEF(CPyLabelProtocol, String);
	};
	
	class CPyTouchDelegate : public CPyClassBase
	{
	PYCLASS_DEF_INTERFACE(CPyTouchDelegate)
	public:
		CPyTouchDelegate(){};
		PYCLASS_METHOD_DEF(CPyTouchDelegate, ccTouchBegan);
		PYCLASS_METHOD_DEF(CPyTouchDelegate, ccTouchMoved);
		PYCLASS_METHOD_DEF(CPyTouchDelegate, ccTouchEnded);
		PYCLASS_METHOD_DEF(CPyTouchDelegate, ccTouchCancelled);
		PYCLASS_METHOD_DEF(CPyTouchDelegate, ccTouchesBegan);
		PYCLASS_METHOD_DEF(CPyTouchDelegate, ccTouchesMoved);
		PYCLASS_METHOD_DEF(CPyTouchDelegate, ccTouchesEnded);
		PYCLASS_METHOD_DEF(CPyTouchDelegate, ccTouchesCancelled);
		PYCLASS_METHOD_DEF(CPyTouchDelegate, _ccTouchBegan);
		PYCLASS_METHOD_DEF(CPyTouchDelegate, _ccTouchMoved);
		PYCLASS_METHOD_DEF(CPyTouchDelegate, _ccTouchEnded);
		PYCLASS_METHOD_DEF(CPyTouchDelegate, _ccTouchCancelled);
		PYCLASS_METHOD_DEF(CPyTouchDelegate, _ccTouchesBegan);
		PYCLASS_METHOD_DEF(CPyTouchDelegate, _ccTouchesMoved);
		PYCLASS_METHOD_DEF(CPyTouchDelegate, _ccTouchesEnded);
		PYCLASS_METHOD_DEF(CPyTouchDelegate, _ccTouchesCancelled);
	};
	
	class CPyAccelerometerDelegate : public CPyClassBase
	{
	PYCLASS_DEF_INTERFACE(CPyAccelerometerDelegate)
	public:
		CPyAccelerometerDelegate(){};
		PYCLASS_METHOD_DEF(CPyAccelerometerDelegate, didAccelerate);
	};

	class CPyKeypadDelegate : public CPyClassBase
	{
	PYCLASS_DEF_INTERFACE(CPyKeypadDelegate)
	public:
		CPyKeypadDelegate(){};
		PYCLASS_METHOD_DEF(CPyKeypadDelegate, keyBackClicked);
		PYCLASS_METHOD_DEF(CPyKeypadDelegate, keyMenuClicked);
	};
NS_CCPY_END

#endif